<html>
<head><meta charset="utf-8"><title>fixing the `Location::All` OOMs during fact generation · t-compiler/wg-polonius · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/index.html">t-compiler/wg-polonius</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html">fixing the `Location::All` OOMs during fact generation</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="205860937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205860937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205860937">(Aug 04 2020 at 00:04)</a>:</h4>
<p>so I've pushed part of my prototype for this <a href="https://github.com/lqd/rust/commit/ec3712202e5204f6547fbf9a7c3bb8c8cf5215ee">simple rustc change</a> (points to an outdated rev of the polonius branch, it's just to show the difference in fact generation), <a href="https://github.com/lqd/borrow-check/tree/fix_oom">polonius branch</a></p>



<a name="205860991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205860991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205860991">(Aug 04 2020 at 00:05)</a>:</h4>
<p>instead of materializing each such constraint at all points of the CFG <a href="https://github.com/lqd/rust/commit/ec3712202e5204f6547fbf9a7c3bb8c8cf5215ee#diff-53aef089a36a8e2ed07627fc8915fe63L244-L246">here</a>, we split those into a dedicated relation, <code>outlives_everywhere</code> (naming TBD) and duplicate the rules, while taking care of hopefully not materializing the same data in polonius itself</p>



<a name="205861063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205861063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205861063">(Aug 04 2020 at 00:06)</a>:</h4>
<p>(the rustc branch deletes the same 2 tests which used to OOM during fact gen as they currently OOM in polonius but that's not a big problem, it's mostly to show the approach)</p>



<a name="205861317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205861317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205861317">(Aug 04 2020 at 00:10)</a>:</h4>
<p><a href="https://github.com/lqd/borrow-check/blob/fix_oom/polonius-engine/src/output/location_insensitive.rs#L37-L47">here's an example</a> of the rules duplication in the location-insensitive variant <br>
while there are 2 cases in the naive variant: <a href="https://github.com/lqd/borrow-check/commit/0d3f6b815860b6a448d287120cee95a2b33a689e">for the <code>subsets</code> &amp; <code>requires</code> relations</a></p>



<a name="205861349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205861349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205861349">(Aug 04 2020 at 00:11)</a>:</h4>
<p>I'll push the more complicated changes, for the Opt variant, tomorrow</p>



<a name="205861564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205861564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205861564">(Aug 04 2020 at 00:15)</a>:</h4>
<p>rustc tests are still running so it might still be a bit wrong, and since it's also been a long time since I've updated the test expectations I'll need to verify the baseline on nightly. but that reminds me of the earlier question about the duration of the tests using the Naive variant (so, the worst case). This run had a lot more "this test has been running for more than 60 seconds" than usual, there were also more really high memory usage (and possibly one or two OOMs) but overall it looked like the ui tests were twice as slow</p>



<a name="205861681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205861681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205861681">(Aug 04 2020 at 00:17)</a>:</h4>
<p>(let's be clear, a lot of those tests would be fast-tracked by the location-insensitive analysis in a realistic situation)</p>



<a name="205864571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205864571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205864571">(Aug 04 2020 at 01:18)</a>:</h4>
<p>tests are done, the failures are the same in both cases, with and without the OOM fix</p>



<a name="205911976"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205911976" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205911976">(Aug 04 2020 at 14:17)</a>:</h4>
<p>"twice as slow" for UI tests doesn't seem <em>that</em> bad to me</p>



<a name="205911991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205911991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205911991">(Aug 04 2020 at 14:17)</a>:</h4>
<p>particularly if the location insensitive can do better</p>



<a name="205912011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912011">(Aug 04 2020 at 14:17)</a>:</h4>
<p>still, given that I think we are not going to do the equality variant for now</p>



<a name="205912069"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912069" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912069">(Aug 04 2020 at 14:18)</a>:</h4>
<p>I'm feeling a bit less "ardor" for removing the optimized variant :P</p>



<a name="205912315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912315">(Aug 04 2020 at 14:19)</a>:</h4>
<p>I'm looking at this now</p>



<a name="205912389"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912389" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912389">(Aug 04 2020 at 14:20)</a>:</h4>
<p>ah :)</p>



<a name="205912497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912497">(Aug 04 2020 at 14:21)</a>:</h4>
<p>there's a couple cases in there which are very slow but it's probably move errors in another test, I'm not worried even if it skews the duration</p>



<a name="205912592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912592">(Aug 04 2020 at 14:21)</a>:</h4>
<p>it'll get better once we fix move errors, and of course once we finish adding subset errors to the opt variant we should be back in business</p>



<a name="205912719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912719">(Aug 04 2020 at 14:22)</a>:</h4>
<p>I'd like to get that done today, just so we can have numbers knowing that move errors haven't changed compared to that 2x run</p>



<a name="205912720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912720">(Aug 04 2020 at 14:22)</a>:</h4>
<p>the duplication for the naive rules is not so bad</p>



<a name="205912731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912731">(Aug 04 2020 at 14:22)</a>:</h4>
<p>i'm not sure what it will take for the optimized rules</p>



<a name="205912747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912747">(Aug 04 2020 at 14:23)</a>:</h4>
<p>it's worse there</p>



<a name="205912793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912793">(Aug 04 2020 at 14:23)</a>:</h4>
<p>and it multiplies when you combine subset errors + <code>subset_everywhere</code> :3</p>



<a name="205912843"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912843" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912843">(Aug 04 2020 at 14:23)</a>:</h4>
<p>I feel like one of the my "jobs" that I've never quite completed is to write out the optimized rules</p>



<a name="205912845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912845">(Aug 04 2020 at 14:23)</a>:</h4>
<p>yeah</p>



<a name="205912858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912858">(Aug 04 2020 at 14:23)</a>:</h4>
<p>I wonder if there would be a way to extend <em>datafrog</em> instead</p>



<a name="205912884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912884">(Aug 04 2020 at 14:24)</a>:</h4>
<p>it's not <em>terribly</em> worse, but that variant is already complex so yeah</p>



<a name="205912964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912964">(Aug 04 2020 at 14:24)</a>:</h4>
<p>i.e., to support sets of tuples that are not directly stored in vectors</p>



<a name="205912969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205912969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205912969">(Aug 04 2020 at 14:24)</a>:</h4>
<p>yeah we probably could/should, or generate more of them</p>



<a name="205913087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913087">(Aug 04 2020 at 14:25)</a>:</h4>
<p>(we'd still probably need to augment some joins to ask for a leapjoin to be generated, and the likes, but the rules themselves are generally more palatable)</p>



<a name="205913191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913191">(Aug 04 2020 at 14:26)</a>:</h4>
<p>I'm trying to thikn exactly what I mean</p>



<a name="205913204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913204">(Aug 04 2020 at 14:26)</a>:</h4>
<p>but the Opt one is already complex as it is (and I'm not sure I'm aware of all its subtlety <span aria-label="scream" class="emoji emoji-1f631" role="img" title="scream">:scream:</span>)</p>



<a name="205913213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913213">(Aug 04 2020 at 14:26)</a>:</h4>
<p>if this were prolog, not datalog, I <em>suspect</em> we'd have a rule like</p>



<a name="205913272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913272">(Aug 04 2020 at 14:26)</a>:</h4>
<div class="codehilite"><pre><span></span><code>subset_base(O1, O2, N) :- subset_base_at(O1, O2, N); subset_base_everywhere(O1, O2)
</code></pre></div>



<a name="205913358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913358">(Aug 04 2020 at 14:27)</a>:</h4>
<p>(but that rule doesn't fit datalog because <code>N</code> is unbound in the second half)</p>



<a name="205913420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913420">(Aug 04 2020 at 14:28)</a>:</h4>
<p>if this were prolog, higher-ranked sub origins would love it</p>



<a name="205913462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913462">(Aug 04 2020 at 14:28)</a>:</h4>
<p>I do wonder, in terms of performance</p>



<a name="205913497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913497">(Aug 04 2020 at 14:28)</a>:</h4>
<p>i.e., if we were working backwards --</p>



<a name="205913528"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913528" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913528">(Aug 04 2020 at 14:29)</a>:</h4>
<p>starting with each invalidated loan that also appears in the location insensitive errors --</p>



<a name="205913547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913547">(Aug 04 2020 at 14:29)</a>:</h4>
<p>who knows...</p>



<a name="205913618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913618">(Aug 04 2020 at 14:29)</a>:</h4>
<p>that's also why I was interested in demand transformation as it kinda simulates top-down evaluation from bottom-up rules</p>



<a name="205913623"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913623" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913623">(Aug 04 2020 at 14:29)</a>:</h4>
<p>ultimately propagated forwards is generally better if you can do it and you can narrow the targets enough (as we've talked about)</p>



<a name="205913646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913646">(Aug 04 2020 at 14:29)</a>:</h4>
<p>right</p>



<a name="205913762"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913762" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913762">(Aug 04 2020 at 14:30)</a>:</h4>
<p>I could take a stab at augmenting the optimized variant</p>



<a name="205913782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913782">(Aug 04 2020 at 14:30)</a>:</h4>
<p>I'm kind of at a loss for what to do besides distract y'all right now :)</p>



<a name="205913796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913796">(Aug 04 2020 at 14:30)</a>:</h4>
<p>filtering based on this idea is also a big win (for cases which are already inefficient at least)</p>



<a name="205913840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913840">(Aug 04 2020 at 14:31)</a>:</h4>
<p>augmenting to handle the <code>subset_everywhere</code> relation you mean ?</p>



<a name="205913851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913851">(Aug 04 2020 at 14:31)</a>:</h4>
<p>right</p>



<a name="205913860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913860">(Aug 04 2020 at 14:31)</a>:</h4>
<p>and/or trying to write-up how it works</p>



<a name="205913874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913874">(Aug 04 2020 at 14:31)</a>:</h4>
<p>...I mean the key idea is to delay computing TC until we <em>remove</em> something...</p>



<a name="205913880"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913880" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913880">(Aug 04 2020 at 14:31)</a>:</h4>
<p>...which brings back to mind another thought I've had</p>



<a name="205913888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913888">(Aug 04 2020 at 14:31)</a>:</h4>
<p>so do you find splitting the relation in two an acceptable way forward ?</p>



<a name="205913898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913898">(Aug 04 2020 at 14:31)</a>:</h4>
<p>it'd be nice if datafrog were a bit more "independent" from vectors and slices</p>



<a name="205913923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205913923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205913923">(Aug 04 2020 at 14:31)</a>:</h4>
<p>I could imagine having a specialized bit of code tailored to transitive relations, in particular</p>



<a name="205914004"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914004" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914004">(Aug 04 2020 at 14:32)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116113">lqd</span> <a href="#narrow/stream/186049-t-compiler.2Fwg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation/near/205913888">said</a>:</p>
<blockquote>
<p>so do you find splitting the relation in two an acceptable way forward ?</p>
</blockquote>
<p>I think it makes sense, although it definitely "messes with" the canonical rules</p>



<a name="205914022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914022">(Aug 04 2020 at 14:32)</a>:</h4>
<p>right right</p>



<a name="205914030"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914030" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914030">(Aug 04 2020 at 14:32)</a>:</h4>
<p>i.e., even the naive rules start to get a bit messier than one might like</p>



<a name="205914076"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914076" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914076">(Aug 04 2020 at 14:32)</a>:</h4>
<p>if we can find a cleaner alternative I'm all for it</p>



<a name="205914079"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914079" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914079">(Aug 04 2020 at 14:32)</a>:</h4>
<p>but I still think it makes sense</p>



<a name="205914094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914094">(Aug 04 2020 at 14:33)</a>:</h4>
<p>right</p>



<a name="205914112"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914112" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914112">(Aug 04 2020 at 14:33)</a>:</h4>
<p>it's not like we <em>have</em> to fix the 2 OOMs today heh</p>



<a name="205914113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914113">(Aug 04 2020 at 14:33)</a>:</h4>
<p>maybe we'll come up with another idea but in the meantime reproducing ALL those tuples for every CFG seems silly</p>



<a name="205914133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914133">(Aug 04 2020 at 14:33)</a>:</h4>
<p>one thing I do remember is that</p>



<a name="205914148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914148">(Aug 04 2020 at 14:33)</a>:</h4>
<p>at somep oint I was refactoring <em>NLL</em> to not have "locations::All"</p>



<a name="205914152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914152">(Aug 04 2020 at 14:33)</a>:</h4>
<p>it was historically a hack but the spirit is correct</p>



<a name="205914164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914164">(Aug 04 2020 at 14:33)</a>:</h4>
<p>and instead to enforce them at the start point</p>



<a name="205914168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914168">(Aug 04 2020 at 14:33)</a>:</h4>
<p>yeah I remember</p>



<a name="205914170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914170">(Aug 04 2020 at 14:33)</a>:</h4>
<p>or something like that</p>



<a name="205914179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914179">(Aug 04 2020 at 14:33)</a>:</h4>
<p>this would be I guess a good alternative</p>



<a name="205914204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914204">(Aug 04 2020 at 14:33)</a>:</h4>
<p>so to sum up:</p>



<a name="205914205"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914205" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914205">(Aug 04 2020 at 14:33)</a>:</h4>
<p>I don't remember enough about that work but just <em>not having the problem</em> seems good too :)</p>



<a name="205914387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914387">(Aug 04 2020 at 14:35)</a>:</h4>
<ul>
<li>you could if you wanted to try to adapt the opt variant to the split subset relations, and we can compare notes after, as I already prototyped it (it's just slightly time-consumin to untangle from my other tests as I needed to make sure it worked with subset errors, the "interestingness filtering" we mentioned just above taking into account potential erroneous loans etc etc)</li>
</ul>



<a name="205914463"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914463" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914463">(Aug 04 2020 at 14:36)</a>:</h4>
<p>Now I'm thinking it'd be better to look at the NLL code and see if I think there's a way to just remove the need for <code>Locations::All</code> to begin with...</p>



<a name="205914484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914484">(Aug 04 2020 at 14:36)</a>:</h4>
<ul>
<li>you could look for an alternative to this, be it implementation wise, or resurrecting the old NLL branch</li>
</ul>



<a name="205914526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914526">(Aug 04 2020 at 14:36)</a>:</h4>
<p>(I don't have any other idea for an alternative beyond removing the "concept")</p>



<a name="205914595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914595">(Aug 04 2020 at 14:37)</a>:</h4>
<ul>
<li>you could take a look at datafrog to remove the vec/slices bias, though to be fair Leapers are completely abstracted, and I had added some Relations specialized to cases like <code>!killed</code> using probabilistic data structures for quick filtering</li>
</ul>



<a name="205914633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914633">(Aug 04 2020 at 14:37)</a>:</h4>
<ul>
<li>there's the move errors issue with the temporary + Drop</li>
</ul>



<a name="205914768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205914768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205914768">(Aug 04 2020 at 14:38)</a>:</h4>
<p>there was an issue for the Location::All topic btw <a href="https://github.com/rust-lang/polonius/issues/24">https://github.com/rust-lang/polonius/issues/24</a> with a link to the rustc PR and a bit more</p>



<a name="205915167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205915167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205915167">(Aug 04 2020 at 14:41)</a>:</h4>
<p>ah nice</p>



<a name="205915646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205915646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205915646">(Aug 04 2020 at 14:44)</a>:</h4>
<p>(Yes, those notes help a lot)</p>



<a name="205915755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205915755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205915755">(Aug 04 2020 at 14:45)</a>:</h4>
<ul>
<li>some thoughts on ways to improve things that hold at all points could be worthwhile (but I presume we can just not be lazy and duplicate the rules where we need to, or again look towards generation to have soufflé like <code>;</code> support)</li>
</ul>



<a name="205916361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205916361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205916361">(Aug 04 2020 at 14:50)</a>:</h4>
<ul>
<li>the questions of richer integration with rustc's data structures (MIR, the dataflow framework, maybe just the <code>rustc_data_structures</code> crate, dominators et al), getting the SCCs, limiting fact generation, having a block granularity where we can, reformulating the location-insensitive analysis as simple reachability queries over the condensation graph could also be good to discuss :)</li>
</ul>



<a name="205918063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205918063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205918063">(Aug 04 2020 at 15:02)</a>:</h4>
<p>Yeah, for sure.</p>



<a name="205918738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205918738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205918738">(Aug 04 2020 at 15:07)</a>:</h4>
<p>so I looked a bit into this</p>



<a name="205918773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205918773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205918773">(Aug 04 2020 at 15:08)</a>:</h4>
<p>I feel like all of the <code>Location::All</code> cases come from user type annotations</p>



<a name="205918926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205918926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205918926">(Aug 04 2020 at 15:09)</a>:</h4>
<p>it seems like from my write-up that the problem comes from the liveness rules</p>



<a name="205918998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205918998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205918998">(Aug 04 2020 at 15:10)</a>:</h4>
<p>which makes me wonder if the idea should be to enforce those user-type annotations <em>at each assignment</em> to the variable in question</p>



<a name="205919012"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919012" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919012">(Aug 04 2020 at 15:10)</a>:</h4>
<p>the "return place" can be considered a special case of this</p>



<a name="205919060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919060">(Aug 04 2020 at 15:10)</a>:</h4>
<p>i.e., we desugar <code>return foo</code> to <code>_0 = foo</code>, and so it's an assignment to the local variable <code>_0</code>, and that might mean that this is a point to enforce the user-type annotation on <code>_0</code> (i.e., the declared return type)</p>



<a name="205919080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919080">(Aug 04 2020 at 15:11)</a>:</h4>
<p>this also handles the case I cited here:</p>



<a name="205919085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919085">(Aug 04 2020 at 15:11)</a>:</h4>
<div class="codehilite"><pre><span></span><code><span class="k">fn</span> <span class="nf">foo</span><span class="p">(</span><span class="k">mut</span><span class="w"> </span><span class="n">x</span>: <span class="kp">&amp;</span><span class="nb">&#39;static</span><span class="w"> </span><span class="kt">u32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">  </span><span class="kd">let</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">22</span><span class="p">;</span><span class="w"></span>
<span class="w">  </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">y</span><span class="p">;</span><span class="w"> </span><span class="c1">// OK</span>
<span class="w">  </span><span class="c1">// ... here, `x` is not considered `&#39;static` ..</span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="205919096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919096">(Aug 04 2020 at 15:11)</a>:</h4>
<p>i.e., <code>x = &amp;y</code> would trigger us to enforce the user-type annotation again</p>



<a name="205919121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919121">(Aug 04 2020 at 15:11)</a>:</h4>
<p>and hence <code>x</code> <em>would</em> be considered <code>'static</code></p>



<a name="205919714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919714">(Aug 04 2020 at 15:14)</a>:</h4>
<p>I guess one example that doesn't fit this category, or maybe only "partly fits" it, is the "applied member constraints"</p>



<a name="205919997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205919997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205919997">(Aug 04 2020 at 15:15)</a>:</h4>
<p>right there was also this topic</p>



<a name="205920420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920420">(Aug 04 2020 at 15:19)</a>:</h4>
<p>I guess we also create some constraints early on as part of the parameters</p>



<a name="205920458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920458">(Aug 04 2020 at 15:19)</a>:</h4>
<p>anyway, I think I'm semi-convinced that we could remove <code>Locations::All</code> in favor of a better handling of user-given type annotations, but it seems 'not entirely trivial' to do</p>



<a name="205920496"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920496" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920496">(Aug 04 2020 at 15:19)</a>:</h4>
<p>it's also true that this will result in more tuples</p>



<a name="205920578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920578">(Aug 04 2020 at 15:20)</a>:</h4>
<p>would the only benefit be that we don't have to handle these cases specially ?</p>



<a name="205920593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920593">(Aug 04 2020 at 15:20)</a>:</h4>
<p>i.e., we'll be converting Location::All into regular tuples, often inserted close to the start of the graph, so they will propagate forward</p>



<a name="205920627"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920627" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920627">(Aug 04 2020 at 15:20)</a>:</h4>
<p>I think that would be the only benefit</p>



<a name="205920640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920640">(Aug 04 2020 at 15:21)</a>:</h4>
<p>basically cleaner and simpler</p>



<a name="205920658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920658">(Aug 04 2020 at 15:21)</a>:</h4>
<p>but only on the polonius side, perhaps :)</p>



<a name="205920890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920890">(Aug 04 2020 at 15:22)</a>:</h4>
<p>maybe hard to justify then</p>



<a name="205920971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205920971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205920971">(Aug 04 2020 at 15:22)</a>:</h4>
<p>probably worth keeping notes on it</p>



<a name="205921000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921000">(Aug 04 2020 at 15:23)</a>:</h4>
<p>as a possible future change</p>



<a name="205921001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921001">(Aug 04 2020 at 15:23)</a>:</h4>
<p>if it's non trivial and only helps this specific case, which is annoying sure but maybe less so than doing the NLL rework</p>



<a name="205921058"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921058" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921058">(Aug 04 2020 at 15:23)</a>:</h4>
<p>yeah I'm trying to think if there would be a 'simple way' to do it</p>



<a name="205921374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921374">(Aug 04 2020 at 15:25)</a>:</h4>
<p>I could imagine for example</p>



<a name="205921398"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921398" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921398">(Aug 04 2020 at 15:25)</a>:</h4>
<p>changing from <code>Location::All</code></p>



<a name="205921459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921459">(Aug 04 2020 at 15:26)</a>:</h4>
<p>to something a bit more specific, e.g., <code>Location::UserVariable(X)</code></p>



<a name="205921474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921474">(Aug 04 2020 at 15:26)</a>:</h4>
<p>and then, when we are generating nll-facts, we can find the right statements that correspond to writes of that variable</p>



<a name="205921476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921476">(Aug 04 2020 at 15:26)</a>:</h4>
<p>things like that</p>



<a name="205921483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921483">(Aug 04 2020 at 15:26)</a>:</h4>
<p>this might actually not be that hard to do</p>



<a name="205921495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921495">(Aug 04 2020 at 15:26)</a>:</h4>
<p>interesting yeah</p>



<a name="205921497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921497">(Aug 04 2020 at 15:26)</a>:</h4>
<p>and it wouldn't interfere with normal NLL</p>



<a name="205921560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921560">(Aug 04 2020 at 15:27)</a>:</h4>
<p>I guess I have to go and see if I could easily find a suitable <code>Location</code> value for each location</p>



<a name="205921862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205921862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205921862">(Aug 04 2020 at 15:29)</a>:</h4>
<p>I thought we had some of this information more or less easily available but maybe it was for optimization purposes in later passes</p>



<a name="205922135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205922135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205922135">(Aug 04 2020 at 15:31)</a>:</h4>
<p>at the same time I think I remember we did such similar mir walks during borrowck <span aria-label="thinking" class="emoji emoji-1f914" role="img" title="thinking">:thinking:</span></p>



<a name="205922745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205922745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205922745">(Aug 04 2020 at 15:36)</a>:</h4>
<p>yes, so, looking into it, the main thing I don't know how to fit into this idea is the member-constraints</p>



<a name="205922766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205922766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205922766">(Aug 04 2020 at 15:36)</a>:</h4>
<p>I suspect that actually they fit just fine <em>but</em></p>



<a name="205922806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205922806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205922806">(Aug 04 2020 at 15:37)</a>:</h4>
<p>the code which creates them doesn't have easy access to the right info</p>



<a name="205922814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205922814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205922814">(Aug 04 2020 at 15:37)</a>:</h4>
<p>although maybe it can be passed down</p>



<a name="205923214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205923214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205923214">(Aug 04 2020 at 15:40)</a>:</h4>
<p><em>oh</em></p>



<a name="205923228"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205923228" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205923228">(Aug 04 2020 at 15:40)</a>:</h4>
<p>the code I was staring at is actually part of error reporting I think</p>



<a name="205923469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205923469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205923469">(Aug 04 2020 at 15:42)</a>:</h4>
<p>and we might not even need to update it ?</p>



<a name="205928412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205928412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205928412">(Aug 04 2020 at 16:25)</a>:</h4>
<p>sorry, got distracted eating lunch and other things</p>



<a name="205928489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/205928489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#205928489">(Aug 04 2020 at 16:26)</a>:</h4>
<p>but yeah I am thinking I might attempt a change to introduce a parameter that ties <code>Location::All</code> to a local and see if I can actually find a viable choice for each case</p>



<a name="206003362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206003362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206003362">(Aug 05 2020 at 09:29)</a>:</h4>
<p>so for this I won't open PRs of the <code>subset</code>-splitting branches above until we're sure <code>Location::All</code> wouldn't be better handled by the changes described right above this message</p>



<a name="206003469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206003469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206003469">(Aug 05 2020 at 09:30)</a>:</h4>
<p>I'm actually about to start experimenting here</p>



<a name="206003544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206003544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206003544">(Aug 05 2020 at 09:31)</a>:</h4>
<p>awesome :)</p>



<a name="206005128"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005128" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005128">(Aug 05 2020 at 09:55)</a>:</h4>
<p>ok, well, I'm not sure if this will really work</p>



<a name="206005145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005145">(Aug 05 2020 at 09:55)</a>:</h4>
<p>some challenges I encountered:</p>



<a name="206005193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005193">(Aug 05 2020 at 09:56)</a>:</h4>
<p>well, idk, maybe it's ok</p>



<a name="206005196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005196">(Aug 05 2020 at 09:56)</a>:</h4>
<p>but basically there are some user-type annotations in places I had forgotten about</p>



<a name="206005204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005204">(Aug 05 2020 at 09:56)</a>:</h4>
<p>although I guess all of those have pretty clear locations, now that I think about it</p>



<a name="206005223"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005223" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005223">(Aug 05 2020 at 09:56)</a>:</h4>
<p>e.g., constants, expressions like <code>x: ty</code></p>



<a name="206005245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005245">(Aug 05 2020 at 09:57)</a>:</h4>
<p>indeed, in some of those cases where we are using <code>Locations::All</code> the behavior might even be <em>confusing</em></p>



<a name="206005394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005394">(Aug 05 2020 at 09:59)</a>:</h4>
<p>in that the constraints can apply even before the annotations appear in the code ?</p>



<a name="206005431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005431">(Aug 05 2020 at 09:59)</a>:</h4>
<p>right</p>



<a name="206005436"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005436" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005436">(Aug 05 2020 at 09:59)</a>:</h4>
<p>I have to look at the MIR we get I guess but</p>



<a name="206005486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005486">(Aug 05 2020 at 10:00)</a>:</h4>
<p>I am imagining something like</p>



<a name="206005535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005535">(Aug 05 2020 at 10:00)</a>:</h4>
<div class="codehilite"><pre><span></span><code><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">22</span><span class="p">;</span><span class="w"></span>
<span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="p">;</span><span class="w"></span>

<span class="k">if</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="mi">44</span><span class="p">;</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">p</span>: <span class="kp">&amp;</span><span class="nb">&#39;static</span><span class="w"> </span><span class="kt">i32</span><span class="p">;</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>

<span class="nb">drop</span><span class="p">(</span><span class="n">p</span><span class="p">);</span><span class="w"></span>
</code></pre></div>



<a name="206005545"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005545" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005545">(Aug 05 2020 at 10:01)</a>:</h4>
<p>ok it's a really weird example</p>



<a name="206005555"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005555" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005555">(Aug 05 2020 at 10:01)</a>:</h4>
<p>but then all of these are :)</p>



<a name="206005607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005607">(Aug 05 2020 at 10:01)</a>:</h4>
<p>I do indeed get a compilation error from that</p>



<a name="206005651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005651">(Aug 05 2020 at 10:02)</a>:</h4>
<p>I guess that's not surprising</p>



<a name="206005656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005656">(Aug 05 2020 at 10:02)</a>:</h4>
<p>NLL isn't this flow sensitive</p>



<a name="206005678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005678">(Aug 05 2020 at 10:02)</a>:</h4>
<p><a href="https://play.rust-lang.org/?version=nightly&amp;mode=debug&amp;edition=2018&amp;gist=9e5e82015a1f0f3000fc028fabe78eaf">playground</a></p>



<a name="206005762"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005762" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005762">(Aug 05 2020 at 10:03)</a>:</h4>
<p>let me look at what MIR we generate etc though</p>



<a name="206005845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206005845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206005845">(Aug 05 2020 at 10:04)</a>:</h4>
<p>(gotta go for a bit I'll be back after lunch)</p>



<a name="206006433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206006433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206006433">(Aug 05 2020 at 10:14)</a>:</h4>
<p>Yeah, I have to stop and go for my morning run :)</p>



<a name="206006437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206006437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206006437">(Aug 05 2020 at 10:14)</a>:</h4>
<p>I'm still pursuing this a bit</p>



<a name="206006441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206006441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206006441">(Aug 05 2020 at 10:14)</a>:</h4>
<p>I haven't quite given up yet ;)</p>



<a name="206006489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206006489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206006489">(Aug 05 2020 at 10:15)</a>:</h4>
<p>I feel like there may be a PR here even if we <em>kept</em> <code>Locations::All</code></p>



<a name="206006928"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206006928" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206006928">(Aug 05 2020 at 10:22)</a>:</h4>
<p>nice :)</p>



<a name="206022676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206022676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206022676">(Aug 05 2020 at 13:38)</a>:</h4>
<p>ok, I looked a bit more into it. There are a few annoying cases I've not yet fully understood.</p>



<a name="206022693"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206022693" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206022693">(Aug 05 2020 at 13:38)</a>:</h4>
<p>One of the easier ones if the yield type</p>



<a name="206022744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206022744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206022744">(Aug 05 2020 at 13:39)</a>:</h4>
<p>The way we handle user-type annotations is a bit complicated, especially stuff like</p>
<div class="codehilite"><pre><span></span><code><span class="kd">let</span><span class="w"> </span><span class="p">(</span><span class="n">a</span>: <span class="nc">T1</span><span class="p">,</span><span class="w"> </span><span class="n">b</span>: <span class="nc">T2</span><span class="p">)</span>: <span class="nc">T3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">..</span><span class="p">.</span><span class="w"></span>
</code></pre></div>



<a name="206022766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/186049-t-compiler/wg-polonius/topic/fixing%20the%20%60Location%3A%3AAll%60%20OOMs%20during%20fact%20generation/near/206022766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/186049-t-compiler/wg-polonius/topic/fixing.20the.20.60Location.3A.3AAll.60.20OOMs.20during.20fact.20generation.html#206022766">(Aug 05 2020 at 13:39)</a>:</h4>
<p>but really I think all of the locations <em>have</em> a kind of location that can be ascribed</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>